# library(reticulate)
# use_condaenv("/Users/tomasz/opt/anaconda3/bin/python", required = TRUE)

Powtórzenie

Model GARCH wykorzystywany jest przy modelowaniu i przewidywaniu zmienności w szeregach czasowych. Stosuje się go głównie w analizie finansowej.

Wzór ogólny

\[ GARCH(p, q): \sigma_t^2=\omega+\sum_{i=1}^{p}{\alpha_i\epsilon_{t-i}^2} + \sum_{j=1}^{q}{\beta_j\sigma_{t-j}^2} \]

Najczęściej omawiany przypadek

\[ GARCH(1, 1): \sigma_t^2=\omega+{\alpha\epsilon_{t-1}^2} + {\beta\sigma_{t-1}^2} \]

\(\omega\) - bazowy poziom wariancji warunkowej

\(\alpha\) – współczynnik reakcji na nowe informacje (efekt ARCH)

\(\beta\) – współczynnik pamięci zmienności (efekt GARCH)

\(\epsilon_{t-1}^2\) – kwadrat błędu z kroku \(t-1\)

\(\sigma_{t-1}^2\) – wariancja z kroku \(t-1\)

Założenia dotyczące rozkładu standaryzowanych reszt

\[ \text{reszta} = \epsilon_t = \text{predyktowany zwrot} - \text{średni zwrot} \]

\[ \text{standaryzowana reszta} = \frac{\epsilon_t}{\sigma_t} \]

gm_resid = gm_result.resid
gm_std = gm_result.conditional_volatility

gm_std_resid = gm_resid / gm_std


  • Rozkład normalny (domyślna opcja): "normal"

  • Rozkład t-Studenta – grube ogony rozkładu: "t"

  • Skośny rozkład t-Studenta – grube ogony i skośność: "skewt"

Implementacja

normal_gm = arch_model(
  returns, p = 1, q = 1, 
  mean = 'constant', 
  vol = 'GARCH', 
  dist = 'normal'  # założenie o rozkładzie
  )

Rozkład normalny standaryzowanych reszt

Rozkład t–Studenta standaryzowanych reszt

Skośny rozkład t–Studenta standaryzowanych reszt

Założenia o średniej

  • Stała średnia (domyślna opcja): "constant"

  • Zerowa średnia: "zero"

  • Średnia modelowana jako proces AR: "AR" (np. AR(1), AR(2), …)

Implementacja

ar_gm = arch_model(
  returns, p = 1, q = 1, 
  mean = 'AR', lags = 1,  # założenie o średniej
  vol = 'GARCH', 
  dist = 'normal' 
  )

Wpływ założeń o średniej

… na szacowaną zmienność warunkową

Korelacja między wynikami

  Constant Mean AR Mean Zero Mean
Constant Mean 1.000000 0.999939 0.999400
AR Mean 0.999939 1.000000 0.999390
Zero Mean 0.999400 0.999390 1.000000

Asymetryczne wahania zmienności

Model GARCH zakłada, że zmienność reaguje symetrycznie na zdarzenia rynkowe. W praktyce jednak negatywne informacje (np. spadki cen) wywołują silniejszy wzrost zmienności niż pozytywne.

Modele dla asymetrycznych wahań zmienności

GJR–GARCH(p, o, q)

  • umożliwia większy wpływ negatywnych szoków na zmienność poprzez dodatkowy warunkowy składnik \((\gamma > 0)\)

    \[ \sigma^2 = \omega + \sum_{i=1}^p\alpha_i\epsilon_{t-i}^2+\sum_{j=1}^o\gamma_jI_{\{\epsilon_{t-j}<0\}}\epsilon_{t-j}^2+\sum_{k=1}^q\beta_k\sigma_{t-k}^2 \]

Implementacja

arch_model(
  returns, p = 1, q = 1, 
  o = 1,  # ustawiamy rząd składnika asymetrycznego
  mean = 'constant', 
  vol = 'GARCH'
  )


EGARCH(p, o, q)

\[ \ln\sigma_{t}^{2}=\omega+\sum_{i=1}^{p}\alpha_{i}\left(\left|e_{t-i}\right|-\sqrt{2/\pi}\right)+\sum_{j=1}^{o}\gamma_{j} e_{t-j}+\sum_{k=1}^{q}\beta_{k}\ln\sigma_{t-k}^{2}, \]

gdzie \(e_{t}=\epsilon_{t}/\sigma_{t}\).

  • wykładniczy GARCH

  • parametry występujące w modelu nie muszą być dodatnie

Implementacja

arch_model(
  returns, p = 1, q = 1, 
  o = 1, 
  mean = 'constant', 
  vol = 'EGARCH'  # określamy model
  )

Porównanie modeli

Zbliżenie na lata 1997–1998

Prognozy oparte na oknie ruchomym

… polegają na ciągłym dopasowywaniu i predykowaniu (1. step forward) przyszłości z uwzględnieniem nowych obserwacji.

Expanding window forecast

… czyli poszerzające się okno ruchome

Fixed window forecast

… czyli stałe okno ruchome

ARMA-GARCH w pakiecie R

library(xts)
library(zoo)
library(rugarch)

aapl <- read.csv('aapl.us.txt', header = TRUE, sep = ",")
aapl_xts <- xts(aapl[, 5], order.by = as.Date(aapl[, 1]))
returns <- diff(log(aapl_xts))
returns <- na.omit(returns)

spec <- ugarchspec(mean.model = list(armaOrder = c(1, 1), include.mean = TRUE),
              variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
              distribution.model = "norm")
fit <- ugarchfit(spec, returns)
print(fit)

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(1,0,1)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error  t value Pr(>|t|)
mu      0.001634    0.000247   6.6170 0.000000
ar1    -0.217987    0.203856  -1.0693 0.284926
ma1     0.244830    0.202280   1.2104 0.226143
omega   0.000007    0.000002   3.5380 0.000403
alpha1  0.079135    0.007842  10.0915 0.000000
beta1   0.919864    0.008230 111.7724 0.000000

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
mu      0.001634    0.000288  5.67306 0.000000
ar1    -0.217987    0.122147 -1.78462 0.074323
ma1     0.244830    0.124605  1.96484 0.049433
omega   0.000007    0.000007  0.92872 0.353035
alpha1  0.079135    0.039114  2.02318 0.043055
beta1   0.919864    0.038559 23.85605 0.000000

LogLikelihood : 18812.31 

Information Criteria
------------------------------------
                    
Akaike       -4.4975
Bayes        -4.4925
Shibata      -4.4975
Hannan-Quinn -4.4958

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic   p-value
Lag[1]                    0.08462 7.711e-01
Lag[2*(p+q)+(p+q)-1][5]   6.06310 6.024e-05
Lag[4*(p+q)+(p+q)-1][9]   9.40944 1.630e-02
d.o.f=2
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.7036  0.4016
Lag[2*(p+q)+(p+q)-1][5]    1.1845  0.8167
Lag[4*(p+q)+(p+q)-1][9]    1.7593  0.9317
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3]    0.3134 0.500 2.000  0.5756
ARCH Lag[5]    0.8977 1.440 1.667  0.7635
ARCH Lag[7]    1.3226 2.315 1.543  0.8561

Nyblom stability test
------------------------------------
Joint Statistic:  2.369
Individual Statistics:             
mu     0.1320
ar1    0.6277
ma1    0.6344
omega  0.9453
alpha1 0.5537
beta1  0.9312

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.49 1.68 2.12
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value     prob sig
Sign Bias           2.3545 0.018573  **
Negative Sign Bias  0.8243 0.409773    
Positive Sign Bias  3.1516 0.001630 ***
Joint Effect       12.7183 0.005287 ***


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     347.0    4.187e-62
2    30     370.3    7.309e-61
3    40     388.3    4.108e-59
4    50     438.4    5.880e-64


Elapsed time : 0.5316429 

Źródła

  • https://bookdown.org/compfinezbook/introcompfinr/maximum-likelihood-estimation.html

  • QUASI-MAXIMUM LIKELIHOOD ESTIMATION AND INFERENCE IN DYNAMIC MODELS WITH TIME-VARYING COVARIANCES https://public.econ.duke.edu/~boller/Published_Papers/ectrev_92.pdf